home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #119 (1991-03)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #119 (1991-03)(Amiga User Group Deutschland e.V.).adf / AmigaBASIC_Programme / Mathetest < prev    next >
Text File  |  1989-07-03  |  12KB  |  218 lines

  1.  
  2.    'Mathematik-Test !
  3.    '© 1988 by Michael Gottwald
  4.    
  5.     
  6. Start: SCREEN 1,640,256,3,2:WINDOW 1,"",(0,0)-(630,200),8,1
  7.  
  8. MC: DEFINT o,w:DIM o(42),w(256):FOR i=0 TO 42:READ o(i):NEXT
  9.     FOR i=0 TO 255:w(i)=-128+i:NEXT:WAVE 0,w:WAVE 1,w:WAVE 2,w:WAVE 3,w
  10.  
  11.  PALETTE 0,.6,.5,.3:PALETTE 1,.6,.5,.3:PALETTE 2,1,1,1:PALETTE 3,1,1,0
  12.  PALETTE 4,.6,0,0:PALETTE 5,0,1,0:PALETTE 6,0,0,.8:PALETTE 7,.36,.24,0
  13.  WINDOW 1:LOCATE 2,31:COLOR 2:PRINT"MATHEMATIK-TEST":COLOR 3,0
  14.  PRINT:PRINT"Trainieren Sie Ihr Kopfrechnen in den 4 Grundrechenarten mit ";
  15.  PRINT"dem AMIGA ganz":PRINT"ungezwungen mit diesem Programm."
  16.  PRINT"Der Test kann völlig individuell eingestellt werden.Dazu dienen ";
  17.  PRINT"die Menü-":PRINT"funktionen:":COLOR 4
  18.  PRINT"* SCHWIERIGKEITSGRAD: Die Größe der Zahl ergibt die maximal zulässi";
  19.  PRINT"gen Dezimal-":PRINT"stellen; bei 4 also Zahlen bis 9999,bei 2 können ";
  20.  PRINT"Zahlen bis 99 auftreten.":COLOR 5:PRINT
  21.  PRINT"* FLIEßKOMMAZAHLEN JA/NEIN: Sollen Fließkommazahlen (Ja) oder nur ";
  22.  PRINT"ganze Zahlen":PRINT"(Nein) verwendet werden ...?":COLOR 6:PRINT
  23.  PRINT"* GEMISCHTE AUFGABEN / NUR EINE GRUNDRECHENART: Sollen die Testauf";
  24.  PRINT"gaben in":PRINT"allen 4 oder nur in einer Grundrechenart gestellt ";
  25.  PRINT"werden ...?":COLOR 7:PRINT
  26.  PRINT"* ANZAHL DER TESTAUFGABEN: Die Anzahl der Testaufgaben,die gestellt";
  27.  PRINT" und ausge-":PRINT"wertet werden sollen.":COLOR 3:PRINT
  28.  PRINT"...ESC drücken,wenns losgehen kann...":COLOR 2,6:LOCATE 23,23
  29.  PRINT"  © 1988 by Michael Gottwald  ":COLOR ,0:Code&=VARPTR(o(0))
  30.  CALL Code&
  31. bMenu: CLS:COLOR 2,7:PRINT"»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»« MENÜ ";
  32.  PRINT"»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«":COLOR 3,0:PRINT
  33.  PRINT"* Schwierigkeitsgrad":PRINT:PRINT"* Fließkommazahlen":PRINT
  34.  PRINT"* Anzahl der Testaufgaben":PRINT:PRINT"*"
  35.  FOR i=14 TO 46 STEP 16:LINE (214,i)-(250,i+12),6,b:NEXT:COLOR 4
  36.  LINE (380,54)-(430,84),2,bf:LINE (380,86)-(430,116),2,bf
  37.  LINE (326,86)-(376,116),2,bf:LINE (434,86)-(484,116),2,bf:COLOR 7
  38.  AREA (390,56):AREA STEP (4,2):AREA STEP (-4,0):AREA STEP (0,16)
  39.  AREA STEP (-1,0):AREA STEP (0,-16):AREA STEP (-4,0):AREA STEP (4,-2)
  40.  AREAFILL:AREA (390,106):AREA STEP (4,-2):AREA STEP (-4,0):AREA STEP (0,-16)
  41.  AREA STEP (-1,0):AREA STEP (0,16):AREA STEP (-4,0):AREA STEP (4,2)
  42.  AREAFILL:AREA (330,90):AREA STEP (4,-2):AREA STEP (0,5):AREA STEP (-5,-3)
  43.  AREA STEP (34,0):AREAFILL:AREA (470,90):AREA STEP (-4,-2):AREA STEP (0,5)
  44.  AREA STEP (5,-3):AREA STEP (-34,0):AREAFILL:PSET (380,54),0:PSET (430,54),0
  45.  PSET (380,84),0:PSET (430,84),0:FOR i=326 TO 434 STEP 54:PSET (i,86),0
  46.  PSET STEP (50,0),0:PSET STEP (0,30),0:PSET STEP (-50,0),0:NEXT:COLOR 6
  47.  LOCATE 13,34:PRINT"Wählen":LOCATE 13,63:PRINT"Wählen":LOCATE 6,47
  48.  PRINT"Pfeil 'rauf":LOCATE 16,47:PRINT"Pfeil 'runter":COLOR 7
  49.  LOCATE 20,2:PRINT"Drücken Sie F10 zum starten des Tests..."
  50.  PRINT:PRINT"...Und ESC zum beenden des Programms...":k=12577793&
  51.  x=254:y=20:lv=2:fl=1:t=1:q=4:COLOR 4:GOSUB pAll:GOSUB Arrow
  52. Select: c=PEEK(k):IF c=103 AND y>20 THEN GOSUB clr:y=y-16:GOSUB Arrow
  53.         IF c=101 AND y<68 THEN GOSUB clr:y=y+16:GOSUB Arrow
  54.         IF c=77 THEN GOTO Begin
  55.         IF c=117 THEN END
  56.         IF c=97 OR c=99 THEN
  57.  IF y=20 AND c=97 AND lv>1 THEN lv=lv-1:GOSUB Level
  58.  IF y=20 AND c=99 AND lv<6 THEN lv=lv+1:GOSUB Level
  59.  IF y=36 THEN fl=fl XOR 1:GOSUB Float
  60.  IF y=52 AND c=97 AND q>1 THEN q=q-1:GOSUB Quantity
  61.  IF y=52 AND c=99 AND q<99 THEN q=q+1:GOSUB Quantity
  62.  IF y=68 THEN t=t XOR 1:GOSUB Task
  63.         END IF
  64.        GOTO Select 
  65. Begin:  i=lv:j=fl:l=q:CLS:IF fl=0 THEN 
  66.           PRINT"Wieviele Stellen hinter dem Komma (maximal 16 !) ?"
  67. Number:   INPUT"Bitte ";s:IF s<1 OR s>16 THEN Number
  68.           DEFDBL a-h,m,n
  69.          END IF
  70.         IF fl=1 THEN DEFINT a,b,c,e-h,m,n-s,u-z
  71.         lv=i:fl=j:q=l:CLS:LINE (245,0)-(246,8),3,b:LINE (245,0)-(261,8),3
  72.         LINE (246,0)-(262,8),3:LINE (277,0)-(278,8),3,b:LOCATE 1,36:COLOR 3
  73.         LINE (262,8)-(278,0),3:LINE (261,8)-(277,0),3:LINE (277,8)-(386,8),3
  74.         PRINT"athematiktest":z=1:y=8:FOR i=0 TO 135 STEP 27:z=z+1:y=y-1
  75.         LINE (i,z)-(i+100,15-z),y,bf:LINE (639-i,z)-(539-i,15-z),y,bf:NEXT
  76.         IF t=0 THEN sl=1:GOTO Mixed
  77.         LINE (56,48)-(572,123),2,bf:LINE (56,56)-(572,56),0:COLOR 4,2
  78.         LOCATE 7,30:PRINT"U n t e r m e n Ü":COLOR 6:LOCATE 9,10
  79.         PRINT"A d d i t i o n ...............      x + y      ";:COLOR 5,7
  80.         PRINT" F1 drücken ":LOCATE 11,10:COLOR 6,2
  81.         PRINT"S u b t r a k t i o n .........      x - y      ";:COLOR 5,7
  82.         PRINT" F2 drücken ":LOCATE 13,10:COLOR 6,2
  83.         PRINT"M u l t i p l i k a t i o n ...      x · y      ";:COLOR 5,7
  84.         PRINT" F3 drücken ":LOCATE 15,10:COLOR 6,2
  85.         PRINT"D i v i s i o n ...............      x : y      ";:COLOR 5,7
  86.         PRINT" F4 drücken ":w=0:r=0:tr=0
  87. Fk: k$=INKEY$:IF k$=CHR$(129) THEN GOSUB UMoff:GOSUB Addition:GOTO Finish        
  88.               IF k$=CHR$(130) THEN GOSUB UMoff:GOSUB Subtraktion:GOTO Finish
  89.               IF k$=CHR$(131) THEN GOSUB UMoff:GOSUB Multiplikation:GOTO Finish
  90.               IF k$=CHR$(132) THEN GOSUB UMoff:GOSUB Division:GOTO Finish
  91.              GOTO Fk
  92. Mixed: FOR z=1 TO q:GOSUB UMoff
  93.        ON sl GOSUB Addition,Subtraktion,Multiplikation,Division
  94.        LINE (0,16)-(639,150),0,bf:sl=sl+1:IF sl=5 THEN sl=1
  95.        NEXT:GOTO Finish
  96.   
  97.  SUB polygon STATIC
  98.   SHARED r1,r2,c
  99.   x=320:y=100:d=.628318:FOR i=0 TO 6.28318 STEP d
  100.   LINE (x+COS(i)*r1,y+SIN(i)*r2)-(x+COS(i+d)*r1,y+SIN(i+d)*r2),c:NEXT
  101.   PAINT (x,y),c,c
  102.  END SUB 
  103.  
  104. Finish: COLOR 2,0:CLS:c=7:FOR r1=200 TO 150 STEP -10
  105.         r2=r1/2-20:polygon:c=c-1:NEXT:r2=r2-5:polygon:LOCATE 9,1:COLOR 6
  106.         PRINT PTAB(244)"Anzahl der falschen":PRINT PTAB(280)"Antworten:"
  107.         COLOR 3:LOCATE 12,1:sp=(LEN(STR$(tr))+1)*8:PRINT PTAB((640-sp)/2)tr
  108.         LOCATE 14,30:COLOR 2:PRINT"Note: ";:IF tr>0 THEN pr=tr/q*100
  109.         IF tr>=q THEN PRINT"Ungenügend !":GOTO GetAnswer 
  110.         IF pr>=75 THEN PRINT"Mangelhaft !":GOTO GetAnswer
  111.         IF pr>=50 THEN PRINT"Ausreichend...":GOTO GetAnswer
  112.         IF pr>=35 THEN PRINT"Befriedigend...":GOTO GetAnswer
  113.         IF pr>=20 THEN PRINT"Gut/Befriedigend...":GOTO GetAnswer
  114.         IF pr>=10 THEN PRINT"Gut...":GOTO GetAnswer
  115.         IF pr>=5 THEN PRINT"Sehr gut/Gut !":GOTO GetAnswer
  116.         IF tr=0 THEN PRINT"Sehr gut !"
  117. GetAnswer: k$=INKEY$:LOCATE 16,26:COLOR 7:PRINT"<ESC> = Ende  <F10> = Neustart"
  118.            k$=INKEY$:IF k$=CHR$(27)THEN END
  119.            IF k$=CHR$(138)THEN RUN
  120.           GOTO GetAnswer           
  121.       
  122. UMoff:  LINE (56,48)-(572,123),0,bf:RETURN            
  123. PrName: COLOR 3,7:l=LEN(a$):FOR i=1 TO l:LOCATE l-i+3,i+2:PRINT" ";
  124.         PRINT MID$(a$,i,1);" ":LOCATE i+2,75-l+i:PRINT" ";MID$(a$,i,1);" "
  125.         NEXT:x=l*8:y=16+x:LINE (x,16)-(630-x,16),7:LINE (0,y)-(41,y),7
  126.         LINE -(x+33,24),7:LINE -(630-x-32,24),7:LINE -(590,y),7
  127.         LINE -(639,y),7:LINE (x,16)-(0,y),7:LINE (630-x,16)-(630,y),7
  128.         PAINT (x,21),7:PAINT (300,21),7:PAINT (630-x,21),7:COLOR 4,0
  129.         LOCATE 5,20:PRINT"Level:";lv;"     ...";:IF fl=1 THEN PRINT"Kein ";
  130.         PRINT"Fließkommaformat":LOCATE 7,18:PRINT"Aufgaben insgesamt:";
  131.         PRINT q;"  Nachkommastellen:";s:LOCATE 9,33:COLOR 2,6
  132.         PRINT"Aufgabe Nr.":RETURN
  133.         
  134. Addition:       a$="Addition":GOSUB PrName:IF t=1 THEN FOR i=1 TO q
  135.                 GOSUB Ntask:GOSUB Numbers:n$=STR$(VAL(n1$)+VAL(n2$))
  136.                 IF fl=0 THEN n$=STR$(VAL(n$)/10^s)
  137.                 GOSUB Cut:e$=n$:GOSUB Set:PRINT"Was ist "n1$"+"n2$" ?"
  138.                 GOSUB Result:LOCATE 15,12:PRINT SPACE$(44):IF t=1 THEN NEXT
  139.                RETURN
  140. Subtraktion:    a$="Subtraktion":GOSUB PrName:IF t=1 THEN FOR i=1 TO q
  141.                 GOSUB Ntask:GOSUB Numbers:WHILE VAL(n1$)<VAL(n2$)
  142.                 GOSUB Numbers:WEND:n$=STR$(VAL(n1$)-VAL(n2$))
  143.                 IF fl=0 THEN n$=STR$(VAL(n$)/10^s)
  144.                 GOSUB Cut:e$=n$:GOSUB Set
  145.                 PRINT"Was ist "n1$"-"n2$" ?":GOSUB Result:LOCATE 15,12
  146.                 PRINT SPACE$(44):IF t=1 THEN NEXT
  147.                RETURN  
  148. Multiplikation: a$="Multiplikation":GOSUB PrName:IF t=1 THEN FOR i=1 TO q
  149.                 GOSUB Ntask:GOSUB Numbers:n$=STR$(VAL(n1$)*VAL(n2$))
  150.                 IF fl=0 THEN n$=STR$(VAL(n$)/10^(s*2))
  151.                 GOSUB Cut:e$=n$:GOSUB Set:PRINT"Was ist "n1$"·"n2$" ?"
  152.                 GOSUB Result:LOCATE 15,12:PRINT SPACE$(44):IF t=1 THEN NEXT
  153.                RETURN 
  154. Division:       a$="Division":GOSUB PrName:IF t=1 THEN FOR i=1 TO q
  155.                 GOSUB Ntask:GOSUB Numbers
  156.                 IF fl=1 THEN
  157.                  WHILE VAL(n1$)/VAL(n2$)<>INT(VAL(n1$)/VAL(n2$))
  158.                  GOSUB Numbers:WEND
  159.                 END IF
  160.                 n$=STR$(VAL(n1$)/VAL(n2$))
  161.                 GOSUB Cut:e$=n$:GOSUB Set:PRINT"Was ist "n1$":"n2$" ?"
  162.                 GOSUB Result:LOCATE 15,12:PRINT SPACE$(44):IF t=1 THEN NEXT
  163.                RETURN     
  164. Cut:     IF fl=1 THEN IF LEFT$(n$,1)=" " THEN n$=MID$(n$,2):RETURN
  165.          n$=MID$(n$,2):pp=1:WHILE pp<=LEN(n$) AND MID$(n$,pp,1)<>"."
  166.          pp=pp+1:WEND:IF LEN(n$)>pp+s THEN n$=LEFT$(n$,pp+s)
  167.         RETURN
  168. Set:     IF fl=0 THEN 
  169.           n1$=STR$(VAL(n1$)/10^s):n2$=STR$(VAL(n2$)/10^s)
  170.           n$=n1$:GOSUB Cut:n1$=n$:n$=n2$:GOSUB Cut:n2$=n$
  171.          END IF
  172.         RETURN
  173. Result:  LOCATE 14,12:COLOR 7:PRINT SPACE$(20):LOCATE 14,12
  174.          INPUT"Bitte ";ip$:LOCATE 15,12
  175.          IF LEN(ip$)>LEN(e$) THEN ip$=LEFT$(ip$,LEN(e$))
  176.          IF fl=0 AND s>1 AND VAL(RIGHT$(ip$,1))+1=VAL(RIGHT$(e$,1)) THEN t=1
  177.          IF fl=0 AND s>1 AND VAL(RIGHT$(ip$,1))-1=VAL(RIGHT$(e$,1)) THEN u=1
  178.          IF t=1 OR u=1 THEN  MID$(ip$,LEN(ip$),1)=RIGHT$(e$,1)
  179.          IF ip$=e$ THEN Right
  180.          PRINT"Falsch !!! ...Auf ein Neues...":tr=tr+1:fr=150:saw:GOTO Result
  181. Right:   COLOR 3:PRINT"Richtig ! ...ESC zum weitermachen drücken !"
  182.          Code&=VARPTR(o(0)):POKE Code&+7,159:POKE Code&+45,159:CALL Code& 
  183.         RETURN
  184. Numbers: RANDOMIZE TIMER:m=10^lv-2:n1=1+RND*m:n2=1+RND*n1:IF n1=1 THEN n2=1
  185.          n$=STR$(n1):GOSUB Cut:n1$=n$:n$=STR$(n2):GOSUB Cut:n2$=n$
  186.          IF fl=0 THEN n1$=STR$(VAL(n1$)*10^s):n2$=STR$(VAL(n2$)*10^s)
  187.         RETURN 'Wegen mangelnder Rechenungenauigkeit in seltenen Fällen
  188.                'die Rechnung mit ganzen Zahlen durchfhren...
  189.                '(Komma um die Anzahl der Stellen nach rechts schieben !)
  190. Ntask:    LOCATE 9,44:COLOR 2,6:PRINT i:LOCATE 12,12:COLOR 2,0:RETURN               
  191. clr:      LINE (254,14)-(276,74),0,bf:RETURN
  192. pAll:     GOSUB Level:GOSUB Float:GOSUB Task:GOSUB Quantity:RETURN 
  193. Level:    LOCATE 3,29:PRINT"  ":LOCATE 3,29:PRINT lv:RETURN
  194. Float:    LOCATE 5,28:PRINT"    ":LOCATE 5,28:IF fl=0 THEN PRINT"Ja":RETURN
  195.           PRINT"Nein":RETURN
  196. Quantity: LOCATE 7,29:PRINT"  ":LOCATE 7,29
  197.           IF q<10 THEN PRINT q:RETURN ELSE LOCATE 7,28:PRINT q:RETURN
  198. Task:     LOCATE 9,3:IF t=0 THEN PRINT"     Gemischte Aufgaben":RETURN
  199.           PRINT"Nur eine Grundrechenart":RETURN          
  200. Arrow: AREA (x,y):AREA STEP (10,-6):AREA STEP (0,4):AREA STEP (12,0)
  201.        AREA STEP (0,4):AREA STEP (-12,0):AREA STEP (0,4):AREA STEP (-10,-6)
  202.        COLOR 2:AREAFILL:COLOR 5:RETURN 
  203.  
  204.  
  205.  SUB saw STATIC
  206.   SHARED fr:FOR i=0 TO 3:SOUND fr+i,8,255,i:SOUND WAIT:NEXT
  207.   SOUND RESUME
  208.  END SUB  
  209.  
  210.  DATA &h48e7,&hc080,&h0c39,&h003b,&h00df,&hf006,&h6700: 'Maschinenprogramm
  211.  DATA &h0014,&h0c39,&h0075,&h00bf,&hec01,&h6600,&hffea: 'zur Erzeugung des
  212.  DATA &h4cdf,&h0103,&h4e75,&h303c,&h0fff,&h323c,&h000f: 'farbigen Streifens
  213.  DATA &h343c,&h003b,&hb439,&h00df,&hf006,&h6600,&hfff8
  214.  DATA &h33c0,&h00df,&hf180,&h0440,&h0110,&h0642,&h0001
  215.  DATA &h51c9,&hffe6,&h33fc,&h0a85,&h00df,&hf180,&h6000
  216.  DATA &hffb0
  217.                                            
  218.